﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;

namespace Controladora.Seguridad
{
   public class CUIniciarSesion
    {
       private static CUIniciarSesion _Instancia;

       public static CUIniciarSesion ObtenerInstancia()
       {
           if (_Instancia == null)
           {
               _Instancia = new CUIniciarSesion();
           }
           return _Instancia;
       }

       private CUIniciarSesion()
       {
       }

       public object IniciarSesion(string usuario,string clave)
       {
           try
           {

               Servicios.Conexion.ObtenerInstancia().Conectar("Seguridad");
               Entidades.Seguridad.Usuario oUsuario = Modelo.Seguridad.CatalogoUsuarios.ObtenerInstancia().BuscarUsuario(usuario);
               Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");

               if (oUsuario == null || oUsuario.Estado == 0)
               {
                   return 1;
               }
               else
               {   
                   if (oUsuario.Clave != clave) return 2;
                   else return oUsuario;
               }
           }
           catch (Exception ex)
           {
               string e = ex.Message;
               return 3;
           }

       }

       public ReadOnlyCollection<Entidades.Seguridad.Perfil> RecuperarPerfilesGrupos(Entidades.Seguridad.Usuario _Usuario)
       {

           try {
               Servicios.Conexion.ObtenerInstancia().Conectar("Seguridad");
               ReadOnlyCollection<Entidades.Seguridad.Perfil> ColPerfil = Modelo.Seguridad.CatalogoPerfiles.ObtenerInstancia().RecuperarPerfilesGrupos(_Usuario);
               Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
               return ColPerfil;
           }
           catch (Exception ex)
           {
               throw (ex);
           }
           finally
           {
               Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
           }
       }

       public ReadOnlyCollection<Entidades.Seguridad.Modulo> ConsultarModulos()
       {

           try
           {
               Servicios.Conexion.ObtenerInstancia().Conectar("Seguridad");
               ReadOnlyCollection<Entidades.Seguridad.Modulo> ColModulo = Modelo.Seguridad.CatalogoModulos.ObtenerInstancia().ListarModulos();
               Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
               return ColModulo;
           }
           catch (Exception ex)
           {
               throw (ex);
           }
           finally
           {
               Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
           }
       }
    }
}
